<?php

class TarefasPadrao extends Zend_Db_Table_Abstract
{

    protected $_name = 'tarefa_padrao';
    protected $_rowClass = 'row_TarefasPadrao';
    protected $_referenceMap = array(
        'Tipo' => array(
            'columns' => array('tipo_id'),
            'refTableClass' => 'TarefasTipo',
            'refColumns' => array('id')
        ),
        'Categoria' => array(
            'columns' => array('categoria_id'),
            'refTableClass' => 'Categorias',
            'refColumns' => array('id')
        ),
    );
    
    public function insert($data)
    {
        $data['ordem'] = (int)$this->ultOrdem($data['tipo_id'])+1;
        parent::insert($data);
    }
    
    public function ultOrdem($tipo_id)
    {
        $select = $this->getAdapter()->select()
        ->from(array('tp' => 'tarefa_padrao'),array('ultimo'=> new Zend_Db_Expr('MAX(ordem)')))
        ->where('tp.tipo_id=?',$tipo_id);
        $result = $select->query()->fetchObject(); 
        return (int)$result->ultimo;
    }
    public function ordemAnterior($ordem,$tipo_id)
    {
        $select = $this->getAdapter()->select()
        ->from(array('tp' => 'tarefa_padrao'),array('ordem'=> new Zend_Db_Expr('MAX(ordem)')))
        ->where('tp.tipo_id=?',$tipo_id)
        ->where('tp.ordem<?',$ordem);
        $result = $select->query()->fetchObject(); 
        $ordem = $result->ordem;
        if(!$ordem==null){
            $select = $this->getAdapter()->select()
            ->from(array('tp' => 'tarefa_padrao'))
            ->where('tp.tipo_id=?',$tipo_id)
            ->where('tp.ordem = ?',$ordem);
            $result = $select->query()->fetchObject(); 
            return $result->id; 
        } else return null;
    }
    public function ordemPosterior($ordem,$tipo_id)
    {
        $select = $this->getAdapter()->select()
        ->from(array('tp' => 'tarefa_padrao'),array('ordem'=> new Zend_Db_Expr('MIN(ordem)')))
        ->where('tp.tipo_id=?',$tipo_id)
        ->where('tp.ordem>?',$ordem);
        $result = $select->query()->fetchObject(); 
        $ordem = $result->ordem;
        if(!$ordem==null){
            $select = $this->getAdapter()->select()
            ->from(array('tp' => 'tarefa_padrao'))
            ->where('tp.tipo_id=?',$tipo_id)
            ->where('tp.ordem = ?',$ordem);
            $result = $select->query()->fetchObject(); 
            return $result->id; 
        } else return null;
    }
    
}